package com.View;

import com.model.Publikasi;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import oracle.jdbc.pool.OracleDataSource;

public class FrameUtama extends JFrame {

    ArrayList<Publikasi> data;
    private JMenuBar menuBar;
    private JMenu menuPublikasi;
    private JMenu menuAnggota;
    private JMenu menuPinjaman;
    private JMenuItem menuTambahPublikasi;
    private JMenuItem menuTambahAnggota;
    private JMenuItem menuTambahPinjaman;
    private JMenuItem menuBacaFilePublikasi;
    private JMenuItem menuBacaFileAnggota;
    private JMenuItem menuTambahFotoAnggota;
    private JMenuItem menuLihatTablePublikasi;

    public FrameUtama() {
        inisialisasi();
    }

    public void inisialisasi() {
        this.setSize(800, 700);
        this.setTitle("Perpustakaan Universitas Sanata Dharma Yogyakarta");
        menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        menuPublikasi = new JMenu("Publikasi");
        menuBar.add(menuPublikasi);
        menuAnggota = new JMenu("Anggota");
        menuBar.add(menuAnggota);
        menuPinjaman = new JMenu("Pinjaman");
        menuBar.add(menuPinjaman);

        menuTambahPublikasi = new JMenuItem("TambahPublikasi");
        menuPublikasi.add(menuTambahPublikasi);
        menuBacaFilePublikasi = new JMenuItem("LihatPublikasi");
        menuPublikasi.add(menuBacaFilePublikasi);
        menuTambahAnggota = new JMenuItem("TambahAnggota");
        menuAnggota.add(menuTambahAnggota);
        menuBacaFileAnggota = new JMenuItem("LihatAnggota");
        menuAnggota.add(menuBacaFileAnggota);
        menuTambahPinjaman = new JMenuItem("Tambah Pinjaman");
        menuPinjaman.add(menuTambahPinjaman);

        menuTambahPublikasi.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                menuTambahPublikasiAction();
            }
        });
        menuTambahAnggota.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                menuTambahAnggotaAction();
            }
        });
        menuBacaFilePublikasi.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                menuBacaFilePublikasiAction();
            }
        });
        menuBacaFileAnggota.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                menuBacaFileAnggotaAction();
            }
        });
        menuTambahPinjaman.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                menuTambahPinjamanAction();
            }
        });

        menuTambahFotoAnggota = new JMenuItem("Tambah Foto");
        menuAnggota.add(menuTambahFotoAnggota);
        menuTambahFotoAnggota.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                menuTambahFotoAnggotaAction();
            }
        });
        menuLihatTablePublikasi = new JMenuItem("Lihat Table Publikasi");
        menuPublikasi.add(menuLihatTablePublikasi);
        menuLihatTablePublikasi.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                try {
                    menuLihatTablePublikasiAction();
                } catch (Exception ex) {
                    Logger.getLogger(FrameUtama.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    private void menuTambahPublikasiAction() {
        JFrame dialogTambahPublikasi = new JFrame();
//        dialogTambahPublikasi.setLayout(new FlowLayout());
        dialogTambahPublikasi.setSize(500, 500);
        dialogTambahPublikasi.dispose();
        dialogTambahPublikasi.setLocation(100, 80);
        PanelTambahPublikasi panel = new PanelTambahPublikasi();
        dialogTambahPublikasi.add(panel);
        dialogTambahPublikasi.setVisible(true);

    }

    private void menuTambahAnggotaAction() {
        JFrame dialogTambahAnggota = new JFrame();
//        dialogTambahAnggota.setLayout(new FlowLayout());
        dialogTambahAnggota.setSize(500, 400);
        dialogTambahAnggota.dispose();
        dialogTambahAnggota.setLocation(100, 80);
        PanelTambahAnggota panel = new PanelTambahAnggota();
        dialogTambahAnggota.add(panel);
        dialogTambahAnggota.setVisible(true);
    }

    private void menuTambahPinjamanAction() {
        JFrame dialogTambahPinjaman = new JFrame();
//        dialogTambahPinjaman.setLayout(new FlowLayout());
        dialogTambahPinjaman.setSize(500, 400);
        dialogTambahPinjaman.dispose();
        dialogTambahPinjaman.setLocation(100, 80);
        PanelTambahPinjaman panel = new PanelTambahPinjaman();
        dialogTambahPinjaman.add(panel);
        dialogTambahPinjaman.setVisible(true);
    }

    private void menuBacaFilePublikasiAction() {
        JFrame dialogFilePublikasi = new JFrame();
//        dialogTambahAnggota.setLayout(new FlowLayout());
        dialogFilePublikasi.setSize(500, 400);
        dialogFilePublikasi.dispose();
        dialogFilePublikasi.setLocation(100, 80);
        PanelLihatPublikasi panel = new PanelLihatPublikasi();
        dialogFilePublikasi.add(panel);
        dialogFilePublikasi.setVisible(true);
    }

    private void menuBacaFileAnggotaAction() {
        JFrame dialogFileAnggota = new JFrame();
//        dialogTambahAnggota.setLayout(new FlowLayout());
        dialogFileAnggota.setSize(500, 400);
        dialogFileAnggota.dispose();
        dialogFileAnggota.setLocation(100, 80);
        PanelLihatAnggota panel = new PanelLihatAnggota();
        dialogFileAnggota.add(panel);
        dialogFileAnggota.setVisible(true);
    }

    private void menuTambahFotoAnggotaAction() {
        JFrame testFrame = new JFrame();
        PanelTambahFotoAnggota testPanel = new PanelTambahFotoAnggota();
        testFrame.dispose();
        testFrame.getContentPane().add(testPanel);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Lihat Publikasi");
    }

    private void menuLihatTablePublikasiAction() throws Exception {
        data = new ArrayList<Publikasi>();
        String jdbcUrl = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
        String userid = "system"; // gantikan dengan username anda
        String password = "115314087"; // gantikan dengan password anda
        Connection conn = null;
        try {
            OracleDataSource ds;
            ds = new OracleDataSource();
            ds.setURL(jdbcUrl);
            conn = ds.getConnection(userid, password);
            System.out.println("Koneksi is OK");
            String sql = "select id_koleksi, judul, penulis, penerbit from publikasi";
            java.sql.Statement statement = conn.createStatement();
            ResultSet result = statement.executeQuery(sql);
            while (result.next()) {
                Publikasi maha = new Publikasi() {};
                maha.setIdKoleksi(result.getString("id_koleksi"));
                maha.setJudul(result.getString("judul"));
                maha.setPenulis(result.getString("penulis"));
                maha.setPenerbit(result.getString("penerbit"));
                maha.setTahun(result.getInt("tahun"));
                data.add(maha);
            }
        } catch (SQLException e) {
            // perform error handling here
            System.out.println("error :" + e.getMessage());
        }
        JFrame frameJadi = new JFrame();
        PanelLihatTablePublikasi ply = new PanelLihatTablePublikasi(data);
        frameJadi.setSize(500, 600);
        frameJadi.add(ply);
        frameJadi.setVisible(true);
    }
}
